CATs#2で"Amazon BedrockとPR-Agentでコードレビュー自動化に挑戦・実際に運用してみた"というタイトルで登壇しました #catalks

CATs#2で"Amazon BedrockとPR-Agentでコードレビュー自動化に挑戦・実際に運用してみた"というタイトルで登壇しました #catalks

Clock Icon2024.09.26

こんちは、リテールアプリ共創部のmorimorikochanです🤖

先日開催されたCATsの第二回で、僭越ながら登壇させていただきましたので簡単にレポートに残しておきたいと思います。

CATsとは

クラスメソッド発の生成AIコミュニティです! Classmethod AI Talksを略してCATsと書きます🐈
今回はこのコミュニティの第二回のイベントでした。イベントページはこちらからご確認いただけます。

https://cats.doorkeeper.jp/events/177177

登壇内容

概要については以下のまとめをご参照ください。

生成AI#2勉強会スライド

また、利用したスライドはすべて以下から閲覧可能となっています。

話せなかったこと

せっかくなので時間の都合で話せなかったことを少しだけ以下にまとめます。

ファイルの除外設定

PR-AgentはPullRequest(以降PRと呼びます)に含まれる差分を生成AIのモデルに読み取らせてレビューを行います。
そのため、PRの差分が大きければ多いほど生成AIへ読み込ませるデータが膨らみ消費するトークンも増大します。

例えば画像ファイルなどのバイナリデータが差分に含まれる場合、ファイルサイズが大きいためそのまま生成AIに読み込ませると消費するトークンが大きくなってしまいますが、PR-Agentではバイナリデータを自動的に除外します。

Exclude binary files and non code files (e.g. images, pdfs, etc)

https://pr-agent-docs.codium.ai/core-abilities/compression_strategy/?h=binary#repo-language-prioritization-strategy

一方で、テキストファイルは自動では除外されません。例えばpackage-lock.jsonのような自動で出力されるようなファイルは人間がレビューする場合も無視するため、同様に除外させた方が良いでしょう。
このような設定は.pr_agent.tomlで以下のように定義します。

[ignore]
glob = ['**/package-lock.json', 'package-lock.json']

除外されるファイルが存在する場合は、実行時に以下のようにログ出力されるので、設定される際はぜひ参考にしてください。

{
  "text": "Filtered out [ignore] files for pull request:\n",
  "record": {
    "extra": {
      "extra": {
        "files": [
          "hoge/.env.sample",
          "hoge/.gitignore",
          "hoge/README.md",
          "hoge/package-lock.json",
          "hoge/package.json",
          "hoge/src/index.tsx",
          "hoge/tsconfig.json"
        ],
        "filtered_files": [
          "hoge/.env.sample",
          "hoge/.gitignore",
          "hoge/README.md",
          "hoge/package.json",
          "hoge/src/index.tsx",
          "hoge/tsconfig.json"
        ]
      }
    }
  }
}

PR-Agentの内部実装ではLiteLLMが利用されている

PR-Agentでは生成AIのモデルを呼び出す際にLiteLLMというライブラリを利用しています。

https://www.litellm.ai/

LiteLLMでは様々なモデルが利用可能となっており、最近リリースされたGitHub Modelsも今現在利用可能となっていました。

PR-Agentでは様々な生成AIのモデルが利用可能、とお伝えしたのですがこの特徴を実現している一因がLiteLLMなのではないかと感じました。

実は、Publicリポジトリは設定なしでPR-Agentを利用可能

めちゃくちゃ便利だなーと思ったので別で記事にしたいと思います...!

登壇を終えて

  • 初めてのオンライン登壇で緊張しまくりました
  • 登壇中ネットワークが切れて焦りました...
    • 普段は滅多に起きないので、タイミングが本当に悪かったです
  • 普段はあまり触れない生成AIについてがっつり勉強できてとても貴重な体験となりました。
  • 生成AIを使った自動コードレビューの技術はこれからもwatchしていきたいと思います🚀

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.